Jackson-এ JSON Views একটি পদ্ধতি, যা একই Java ক্লাস থেকে বিভিন্ন প্রসঙ্গ বা ব্যবহারকারী গোষ্ঠীর জন্য JSON ডেটার ভিন্ন ভিন্ন অংশ প্রকাশ করতে ব্যবহৃত হয়। এটি প্রধানত একটি ক্লাসের নির্দিষ্ট ফিল্ডগুলিকে বিভিন্ন ভিউ (context) অনুযায়ী ফিল্টার বা কাস্টমাইজ করতে সাহায্য করে।
কেন JSON Views ব্যবহার করা হয়?
- ডেটা প্রাইভেসি নিশ্চিতকরণ: সংবেদনশীল ডেটা (যেমন পাসওয়ার্ড বা ব্যক্তিগত তথ্য) নির্দিষ্ট ভিউ থেকে লুকানো যায়।
- ডেটা কাস্টমাইজেশন: API ব্যবহারকারীর ধরন অনুযায়ী (যেমন অ্যাডমিন, ইউজার, বা গেস্ট) JSON ডেটার ভিন্ন অংশ প্রদর্শন করা যায়।
- একই ক্লাস ব্যবহার: একটি ক্লাস পুনরায় তৈরি না করেই বিভিন্ন ধরনের JSON আউটপুট তৈরি করা যায়।
- কমপ্লেক্সিটি হ্রাস: JSON সিরিয়ালাইজেশন প্রক্রিয়া সহজ এবং কার্যকর করতে।
JSON Views কিভাবে কাজ করে?
- ভিউ ডিফাইন করা:
JSON Views নির্ধারণের জন্য একটি স্ট্যাটিক নেস্টেড ইন্টারফেস ব্যবহার করা হয়। - ফিল্ড ট্যাগিং:
@JsonViewঅ্যানোটেশন ব্যবহার করে ফিল্ডগুলোকে নির্দিষ্ট ভিউ-এর জন্য ট্যাগ করা হয়। - ObjectMapper-এর মাধ্যমে সিরিয়ালাইজেশন:
নির্দিষ্ট ভিউ অনুযায়ী JSON তৈরি করতেObjectMapper-এ ভিউ সেট করা হয়।
উদাহরণ:
১. JSON Views ডিফাইন এবং ব্যবহার:
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonViewExample {
// ভিউ ডিফাইন করা
public static class Views {
public static class Public {}
public static class Internal extends Public {}
}
// ক্লাসের ফিল্ডে @JsonView প্রয়োগ
public static class User {
@JsonView(Views.Public.class)
private String name;
@JsonView(Views.Public.class)
private String email;
@JsonView(Views.Internal.class)
private String password;
// Constructor, Getters এবং Setters
public User(String name, String email, String password) {
this.name = name;
this.email = email;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public static void main(String[] args) throws Exception {
User user = new User("John Doe", "john.doe@example.com", "secret");
ObjectMapper objectMapper = new ObjectMapper();
// Public ভিউ সিরিয়ালাইজ
String publicJson = objectMapper
.writerWithView(Views.Public.class)
.writeValueAsString(user);
System.out.println("Public View JSON: " + publicJson);
// Internal ভিউ সিরিয়ালাইজ
String internalJson = objectMapper
.writerWithView(Views.Internal.class)
.writeValueAsString(user);
System.out.println("Internal View JSON: " + internalJson);
}
}
আউটপুট:
Public View JSON: {"name":"John Doe","email":"john.doe@example.com"}
Internal View JSON: {"name":"John Doe","email":"john.doe@example.com","password":"secret"}
২. ভিউ-এর ব্যবহারিক প্রয়োগ:
- Public API: যেখানে শুধুমাত্র পাবলিক তথ্য প্রকাশ করা হবে।
- Internal API: যেখানে সংবেদনশীল তথ্যসহ সম্পূর্ণ ডেটা প্রয়োজন।
JSON Views-এর গুরুত্বপূর্ণ বৈশিষ্ট্য:
মাল্টিপল ভিউ: একটি ফিল্ডকে একাধিক ভিউ-এর অংশ বানানো যায়।
@JsonView({Views.Public.class, Views.Internal.class}) private String commonField;- নেস্টেড ভিউ: এক ভিউ-এর মধ্যে আরেক ভিউ ব্যবহার করে আরও ডিটেইল প্রকাশ করা সম্ভব।
- ডায়নামিক আউটপুট: ভিন্ন ভিউ ব্যবহার করে একই ক্লাসের বিভিন্ন JSON ফরম্যাট তৈরি করা যায়।
JSON Views বনাম অন্যান্য পদ্ধতি:
| পদ্ধতি | সুবিধা | অসুবিধা |
|---|---|---|
| JSON Views | একই ক্লাস থেকে ভিন্ন ভিউ তৈরি করা সহজ। প্রাইভেসি নিশ্চিত করা যায়। | অতিরিক্ত কনফিগারেশন প্রয়োজন। |
| Custom Serializer | সম্পূর্ণ নিয়ন্ত্রণ পাওয়া যায়। | কাস্টম কোডিং বেশি করতে হয়। |
| DTO Classes | ভিন্ন ভিউ-এর জন্য আলাদা ক্লাস তৈরি করা যায়। | বেশি কোড ডুপ্লিকেশন এবং রক্ষণাবেক্ষণের সমস্যা। |
Jackson-এর JSON Views একটি কার্যকর পদ্ধতি যা ডেটা প্রাইভেসি নিশ্চিত করে এবং একই Java ক্লাস থেকে বিভিন্ন ধরনের JSON আউটপুট তৈরি করতে সাহায্য করে। এটি API ডেভেলপমেন্টে ডেটা কাস্টমাইজেশন ও নিরাপত্তার জন্য বিশেষভাবে উপযোগী।
Content added By
Read more